home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / share / automake-1.5 / ylwrap < prev   
Encoding:
Text File  |  2005-10-16  |  3.9 KB  |  144 lines

  1. #! /bin/sh
  2. # ylwrap - wrapper for lex/yacc invocations.
  3. # Copyright 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
  4. # Written by Tom Tromey <tromey@cygnus.com>.
  5. #
  6. # This program is free software; you can redistribute it and/or modify
  7. # it under the terms of the GNU General Public License as published by
  8. # the Free Software Foundation; either version 2, or (at your option)
  9. # any later version.
  10. #
  11. # This program is distributed in the hope that it will be useful,
  12. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. # GNU General Public License for more details.
  15. #
  16. # You should have received a copy of the GNU General Public License
  17. # along with this program; if not, write to the Free Software
  18. # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
  19.  
  20. # As a special exception to the GNU General Public License, if you
  21. # distribute this file as part of a program that contains a
  22. # configuration script generated by Autoconf, you may include it under
  23. # the same distribution terms that you use for the rest of that program.
  24.  
  25. # Usage:
  26. #     ylwrap INPUT [OUTPUT DESIRED]... -- PROGRAM [ARGS]...
  27. # * INPUT is the input file
  28. # * OUTPUT is file PROG generates
  29. # * DESIRED is file we actually want
  30. # * PROGRAM is program to run
  31. # * ARGS are passed to PROG
  32. # Any number of OUTPUT,DESIRED pairs may be used.
  33.  
  34. # The input.
  35. input="$1"
  36. shift
  37. case "$input" in
  38.  [\\/]* | ?:[\\/]*)
  39.     # Absolute path; do nothing.
  40.     ;;
  41.  *)
  42.     # Relative path.  Make it absolute.
  43.     input="`pwd`/$input"
  44.     ;;
  45. esac
  46.  
  47. # The directory holding the input.
  48. input_dir=`echo "$input" | sed -e 's,\([\\/]\)[^\\/]*$,\1,'`
  49. # Quote $INPUT_DIR so we can use it in a regexp.
  50. # FIXME: really we should care about more than `.' and `\'.
  51. input_rx=`echo "$input_dir" | sed -e 's,\\\\,\\\\\\\\,g' -e 's,\\.,\\\\.,g'`
  52.  
  53. echo "got $input_rx"
  54.  
  55. pairlist=
  56. while test "$#" -ne 0; do
  57.    if test "$1" = "--"; then
  58.       shift
  59.       break
  60.    fi
  61.    pairlist="$pairlist $1"
  62.    shift
  63. done
  64.  
  65. # The program to run.
  66. prog="$1"
  67. shift
  68. # Make any relative path in $prog absolute.
  69. case "$prog" in
  70.  [\\/]* | ?:[\\/]*) ;;
  71.  *[\\/]*) prog="`pwd`/$prog" ;;
  72. esac
  73.  
  74. # FIXME: add hostname here for parallel makes that run commands on
  75. # other machines.  But that might take us over the 14-char limit.
  76. dirname=ylwrap$$
  77. trap "cd `pwd`; rm -rf $dirname > /dev/null 2>&1" 1 2 3 15
  78. mkdir $dirname || exit 1
  79.  
  80. cd $dirname
  81.  
  82. $prog ${1+"$@"} "$input"
  83. status=$?
  84.  
  85. if test $status -eq 0; then
  86.    set X $pairlist
  87.    shift
  88.    first=yes
  89.    # Since DOS filename conventions don't allow two dots,
  90.    # the DOS version of Bison writes out y_tab.c instead of y.tab.c
  91.    # and y_tab.h instead of y.tab.h. Test to see if this is the case.
  92.    y_tab_nodot="no"
  93.    if test -f y_tab.c || test -f y_tab.h; then
  94.       y_tab_nodot="yes"
  95.    fi
  96.  
  97.    while test "$#" -ne 0; do
  98.       from="$1"
  99.       # Handle y_tab.c and y_tab.h output by DOS
  100.       if test $y_tab_nodot = "yes"; then
  101.      if test $from = "y.tab.c"; then
  102.         from="y_tab.c"
  103.      else
  104.         if test $from = "y.tab.h"; then
  105.            from="y_tab.h"
  106.         fi
  107.      fi
  108.       fi
  109.       if test -f "$from"; then
  110.          # If $2 is an absolute path name, then just use that,
  111.          # otherwise prepend `../'.
  112.          case "$2" in
  113.        [\\/]* | ?:[\\/]*) target="$2";;
  114.        *) target="../$2";;
  115.      esac
  116.  
  117.      # Edit out `#line' or `#' directives.  We don't want the
  118.      # resulting debug information to point at an absolute srcdir;
  119.      # it is better for it to just mention the .y file with no
  120.      # path.
  121.      sed -e "/^#/ s,$input_rx,," "$from" > "$target" || status=$?
  122.       else
  123.      # A missing file is only an error for the first file.  This
  124.      # is a blatant hack to let us support using "yacc -d".  If -d
  125.      # is not specified, we don't want an error when the header
  126.      # file is "missing".
  127.      if test $first = yes; then
  128.         status=1
  129.      fi
  130.       fi
  131.       shift
  132.       shift
  133.       first=no
  134.    done
  135. else
  136.    status=$?
  137. fi
  138.  
  139. # Remove the directory.
  140. cd ..
  141. rm -rf $dirname
  142.  
  143. exit $status
  144.